package com.hzit.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 类名：
 * 作者：WF
 * 功能：
 * proxyBeanMethods：代理bean的方法
 *       Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
 *       Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
 *       组件依赖必须使用Full模式默认。其他默认是否Lite模式
 * 最佳实战：
 *     ■ 配置 类组件之间无依赖关系用Lite模式加速容器启动过程，减少判断
 *     ■ 配置类组件之间有依赖关系，方法会被调用得到之前单实例组件，用Full模式
 */
@Configuration(proxyBeanMethods = true)
public class MyConfig {

	//给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值，就是组件在容器中的实例
	@Bean("user")
	public User user01(){
		User user = new User();
		user.setUsername("aaa");
		user.setAge(10);
		user.setPet(pet01());
		return user;
	}
	@Bean
	public Pet pet01(){
		Pet pet = new Pet();
		pet.setAge(20);
		return pet;
	}
}
